import java.io.*;
import java.util.Scanner;

public class TestDemo13 {
    public static void main(String[] args) {
        //1、输入两个路径
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要拷贝的源路径：");
        String source = sc.next();
        System.out.println("请输入要拷贝的目标路径：");
        String destination = sc.next();
        File file = new File(source);
        if(!file.isFile()){
            System.out.println("输入的源路径不正确！");
            return;
        }
        // 此处不太需要检查目标文件是否存在，OutputStream 写文件的时候，能够自动创建不存在的文件。
        //2、读取源文件，拷贝到目标路径
        try(InputStream inputStream = new FileInputStream(source)){
            try(OutputStream outputStream= new FileOutputStream(destination)){
                // 把 inputStream 的数据 读出来，写到 outputStream
                byte[] buffer= new byte[1024];
                while(true){
                    // 从 source 文件读取到的元素个数
                    int len = inputStream.read(buffer);
                    if(len == -1){
                        // 文件读完了
                        break;
                    }
                    // 写入的时候，不能把整个buffer 都写进入。
                    // 毕竟 buffer 可能只有一部分才是有效数据。【数组可能没存满】
                    outputStream.write(buffer,0,len);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
